home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap;
-
- import java.util.Enumeration;
- import java.util.Hashtable;
-
- public class LDAPSchema {
- private Hashtable objectClasses = new Hashtable();
- private Hashtable attributes = new Hashtable();
- private Hashtable matchingRules = new Hashtable();
- String entryName;
-
- public void addObjectClass(LDAPObjectClassSchema var1) {
- this.objectClasses.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
- }
-
- public void addAttribute(LDAPAttributeSchema var1) {
- this.attributes.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
- }
-
- public void addMatchingRule(LDAPMatchingRuleSchema var1) {
- this.matchingRules.put(((LDAPSchemaElement)var1).getName().toLowerCase(), var1);
- }
-
- public Enumeration getObjectClasses() {
- return this.objectClasses.elements();
- }
-
- public Enumeration getAttributes() {
- return this.attributes.elements();
- }
-
- public Enumeration getMatchingRules() {
- return this.matchingRules.elements();
- }
-
- public LDAPObjectClassSchema getObjectClass(String var1) {
- return (LDAPObjectClassSchema)this.objectClasses.get(var1.toLowerCase());
- }
-
- public LDAPAttributeSchema getAttribute(String var1) {
- return (LDAPAttributeSchema)this.attributes.get(var1.toLowerCase());
- }
-
- public LDAPMatchingRuleSchema getMatchingRule(String var1) {
- return (LDAPMatchingRuleSchema)this.matchingRules.get(var1.toLowerCase());
- }
-
- public Enumeration getObjectClassNames() {
- return this.objectClasses.keys();
- }
-
- public Enumeration getAttributeNames() {
- return this.attributes.keys();
- }
-
- public Enumeration getMatchingRuleNames() {
- return this.matchingRules.keys();
- }
-
- public void fetchSchema(LDAPConnection var1) throws LDAPException {
- if (var1 != null && var1.isConnected()) {
- LDAPEntry var2 = var1.read("");
- if (var2 == null) {
- throw new LDAPException("", 32);
- } else {
- LDAPAttribute var3 = var2.getAttribute("subschemasubentry");
- this.entryName = "cn=schema";
- if (var3 != null) {
- Enumeration var4 = var3.getStringValues();
- if (var4.hasMoreElements()) {
- this.entryName = (String)var4.nextElement();
- }
- }
-
- var2 = this.readSchema(var1, this.entryName);
- var3 = var2.getAttribute("objectclasses");
- if (var3 != null) {
- Enumeration var14 = var3.getStringValues();
-
- while(var14.hasMoreElements()) {
- LDAPObjectClassSchema var5 = new LDAPObjectClassSchema((String)var14.nextElement());
- this.addObjectClass(var5);
- }
- }
-
- var3 = var2.getAttribute("attributetypes");
- if (var3 != null) {
- Enumeration var15 = var3.getStringValues();
-
- while(var15.hasMoreElements()) {
- LDAPAttributeSchema var18 = new LDAPAttributeSchema((String)var15.nextElement());
- this.addAttribute(var18);
- }
- }
-
- Hashtable var19 = new Hashtable();
- var3 = var2.getAttribute("matchingruleuse");
- if (var3 != null) {
- Enumeration var16 = var3.getStringValues();
-
- while(var16.hasMoreElements()) {
- String var6 = (String)var16.nextElement();
- LDAPMatchingRuleSchema var7 = new LDAPMatchingRuleSchema((String)null, var6);
- var19.put(((LDAPSchemaElement)var7).getOID(), var6);
- }
- }
-
- var3 = var2.getAttribute("matchingrules");
- LDAPMatchingRuleSchema var21;
- if (var3 != null) {
- for(Enumeration var17 = var3.getStringValues(); var17.hasMoreElements(); this.addMatchingRule(var21)) {
- String var20 = (String)var17.nextElement();
- var21 = new LDAPMatchingRuleSchema(var20, (String)null);
- String var8 = (String)var19.get(((LDAPSchemaElement)var21).getOID());
- if (var8 != null) {
- var21 = new LDAPMatchingRuleSchema(var20, var8);
- }
- }
- }
-
- }
- } else {
- throw new LDAPException("No connection", 80);
- }
- }
-
- public String toString() {
- String var1 = "Object classes: ";
-
- for(Enumeration var2 = this.getObjectClasses(); var2.hasMoreElements(); var1 = var1 + ' ') {
- var1 = var1 + (String)var2.nextElement();
- }
-
- var1 = var1 + "Attributes: ";
-
- for(Enumeration var8 = this.getAttributes(); var8.hasMoreElements(); var1 = var1 + ' ') {
- var1 = var1 + (String)var8.nextElement();
- }
-
- var1 = var1 + "Matching rules: ";
-
- for(Enumeration var9 = this.getMatchingRules(); var9.hasMoreElements(); var1 = var1 + ' ') {
- var1 = var1 + (String)var9.nextElement();
- }
-
- return var1;
- }
-
- private LDAPEntry readSchema(LDAPConnection var1, String var2) throws LDAPException {
- LDAPSearchResults var3 = var1.search(var2, 0, "objectclass=subschema", (String[])null, false);
- return var3.next();
- }
-
- private static void printEnum(Enumeration var0) {
- while(var0.hasMoreElements()) {
- LDAPSchemaElement var1 = (LDAPSchemaElement)var0.nextElement();
- System.out.println(" " + var1);
- }
-
- }
-
- public static void main(String[] var0) {
- if (var0.length < 2) {
- System.err.println("Usage: netscape.ldap.LDAPSchema HOST PORT");
- System.exit(1);
- }
-
- int var1 = Integer.parseInt(var0[1]);
- LDAPConnection var2 = new LDAPConnection();
-
- try {
- var2.connect(var0[0], var1);
- LDAPSchema var3 = new LDAPSchema();
- var3.fetchSchema(var2);
- var2.disconnect();
- System.out.println("Object classes: ");
- printEnum(var3.getObjectClasses());
- System.out.println("\nAttributes: ");
- printEnum(var3.getAttributes());
- System.out.println("\nMatching rules: ");
- printEnum(var3.getMatchingRules());
- System.exit(0);
- } catch (LDAPException var4) {
- System.err.println(var4);
- }
- }
- }
-